package cn.nawang.ebeim.api.repository.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import cn.nawang.ebeim.api.comm.BaseQuery;
import cn.nawang.ebeim.api.domain.DatasourceConfig;

/**
 * @ClassName: DatasourceConfigQueryRepositoryImpl
 * @Description: 数据源配置dao层
 * @author 张建峰
 * @date 2015年9月18日10:33:17
 * @version v1.0
 */
@Repository
public class DatasourceConfigQueryRepositoryImpl extends BaseQuery{

  @Autowired
  private EntityManagerFactory entityManagerFactory;

  
  /**
   * @author 张建峰
   * @Description: 根据sql查询count
   * @param @param sql
   * @param @return
   * @return int 
   * @date 2015年9月18日10:33:39
   *
   * @修改人 张建峰
   * @修改日期
   */
  public int countData(String sql,List<Object> paramsList) {
    EntityManager em = entityManagerFactory.createEntityManager();
    int count=0;
    try{
      Query query =  em.createQuery(sql);
      for (int i = 0; i < paramsList.size(); i++) {
        query.setParameter(i+1, paramsList.get(i));
      }
      count = query.getResultList().size();
      
      return count;
    }catch(Exception ex){
      ex.printStackTrace();
    }finally{
      em.close();
    }
    return count;
  }

  
  /**
   * @author 张建峰
   * @Description: 根据某个属性查询列表
   * @param @param property
   * @param @param value
   * @param @return
   * @return List<Datasource> 
   * @date 2015年8月10日10:27:27
   *
   * @修改人 张建峰
   * @修改日期
   */
  public List<DatasourceConfig> findByParam(String property,Object value) {
    List objList = null;
    String sql = "from DatasourceConfig obj where obj."+property+" = ?1";
    EntityManager em = entityManagerFactory.createEntityManager();
    try{
      Query query =  em.createQuery(sql);
      query.setParameter(1, value);
      objList = query.getResultList();
    }catch(Exception ex){
      ex.printStackTrace();
    }finally{
      em.close();
    }
    return objList;
  }
  
}